#ifndef DATABASE_H
#define DATABASE_H

#include <sqlite3.h>

#include "DataCollect.h"
#include "Tool.h"

#define DEVICE_FILE "../InitFile/ZigBeeID"

//用于缓存写入数据库或从数据库获取的数据
struct CachedData
{
    char Id[8];
    int Type;
    union
    {
        //两个值
        struct
        {
            double FirstValue;
            double SecondValue;
        } Values ;
        //一个值
        double Value;
    };
};

class CDataBase
{
public:
    static CDataBase * GetInstance();

    bool Init();

    //插入缓存数据
    bool InsertCachedData(const vector<struct CachedData> &);

    //查询某一房间的所有传感器的所有数据
    bool GetDataFromTheRoom(const int, vector<struct CachedData> &);

    //重新初始化设备列表
    bool UpdateDeviceInfo(const char *);

    //删除90天前数据
    bool DeleteData90DaysAgo();

    void Cleanup();

private:
    CDataBase();
    ~CDataBase();


    //打开数据库文件
    bool OpenDB(const char *);

    //关闭数据库
    void CloseDB();

    //创建我们自己定义的表
    void CreateTables();

    //根据文件初始化数据库
    bool InitDataBase(const char *);

private:
    static CDataBase * DataBase;
    sqlite3 *pDatabase;

};

#endif // DATABASE_H
